#ifndef FILTER_PLUGIN_H
#define FILTER_PLUGIN_H

#include "filter_plugin_global.h"
#include "cvplugininterface.h"
#include <QObject>
#include <QSpinBox>

namespace Ui {
    class PluginGui;
}

class FILTER_PLUGINSHARED_EXPORT Filter_Plugin: public QObject, public CvPluginInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "com.opencv.cvplugininterface")
    Q_INTERFACES(CvPluginInterface)
public:
    Filter_Plugin();
    ~Filter_Plugin();

    QString title();
    QString version();
    QString description();
    QString help();
    void setupUi(QWidget *parent);
    void processImage(const cv::Mat &inputImage, cv::Mat &outputImage);

signals:
    void updateNeeded();
    void errorMessage(QString msg);
    void infoMessage(QString msg);

private slots:

    void on_blurKsizeWSpinBox_valueChanged(int arg1);

    void on_blurKsizeHSpinBox_valueChanged(int arg1);

    void on_blurAnchorXSpinBox_valueChanged(int arg1);

    void on_blurAnchorYSpinBox_valueChanged(int arg1);


    void on_gaussKsizeWspinBox_valueChanged(int arg1);

    void on_gaussKsizeHspinBox_valueChanged(int arg1);

    void on_gausssgXdoubleSpinBox_valueChanged(double arg1);

    void on_gausssgYdoubleSpinBox_valueChanged(double arg1);


    void on_bilatDSpinBox_valueChanged(int arg1);

    void on_bilatSigColoSpinBox_valueChanged(double arg1);

    void on_bilatSigSpaceSpinBox_valueChanged(double arg1);


    void on_medianKsizeSpinBox_valueChanged(int arg1);


    void on_Tabs_currentChanged(int index);

    void openURL(QString url);

private:
    Ui::PluginGui *ui;

};

#endif // FILTER_PLUGIN_H
